home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 0769A.ZIP / SHARE.STC < prev    next >
Text File  |  1986-04-13  |  14KB  |  340 lines

  1.  
  2. Item number of file to download or <.C>ancel: 8
  3.  
  4. Item number of file to download or <.C>ancel: 8
  5.  
  6.               Sharing dBASE III Data with Other Programs
  7.                             By Chris White
  8.  
  9.  
  10. Understanding SDF and DELIMITED Files
  11.  
  12. Introduction
  13.  
  14.  
  15. dBASE III can read and write two different forms of text files that
  16. allow the user to transfer data to and from other programs and
  17. operating environments.  The two file structures are, respectively,
  18. SDF and DELIMITED.  The dBASE III commands that can create and read
  19. these file structures are COPY and APPEND.
  20.  
  21. Both structures are similar.  Each has fields, records, record
  22. separators, and an end-of-file mark.  Additionally, the DELIMITED file
  23. has a field separator and delimiter.  The following table summarizes
  24. the attributes of each structure type.
  25.  
  26.                         File structure
  27.  
  28. Attribute               SDF             DELIMITED
  29.  
  30. Record length        Fixed        Variable
  31. Field length        Fixed        Variable
  32. Record separator    CR/LF*        CR/LF*
  33. Field separator        None        Comma or blank
  34. Delimiter         None         Double quotation (default)
  35.                     or Programmable
  36. End-of-file        Ctrl-Z        Ctrl-Z
  37.  
  38. * CR/LF denotes the carriage return and line-feed characters.
  39.  
  40. dBASE III supports all data types except the memo type in reading and
  41. writing SDF and DELIMITED files.  The date type is written and read in
  42. the form YYYYMMDD, with no leading or trailing blanks.  Fields that
  43. are logical type are written as T or F and are read as T/Y or F/N.
  44. There are no leading or trailing blanks, and case is not a
  45. restriction.  The precise manner in which character and numeric types
  46. are written and read is specific to the file structure and is
  47. discussed in the sections that follow.
  48.  
  49.  
  50. SDF
  51.  
  52. Overview
  53.  
  54. SDF is an acronym for System Data Format.  It is a term used to
  55. describe a file structure whose contents are all ASCII characters.
  56. Each record is a line of text terminated with carriage
  57. return/line-feed characters (0D 0A hex), in that order.  The
  58. end-of-file mark is the Ctrl-Z character (1A hex).  Sometimes this
  59. type of file is referred to as a standard DOS text file.
  60.  
  61. dBASE III reads and writes this type of file as having fixed-length
  62. fields and records.  This means that there are leading and trailing
  63. blanks.  Numeric fields are right-justified, decimals are aligned, and
  64. blanks are leading.  Character fields are left-justified and have
  65. trailing blanks.  A typical SDF record might look like the following:
  66.  
  67.  
  68.    |--------------Record Length = 23-------------|
  69.    -----------------------------------------------------
  70.    |x|x|x|x| | | |z|z|z|z|z| | | | | | |1|4|.|0|0|CR|LF|
  71.    -----------------------------------------------------
  72.    |---Field 1---|------Field 2------|--Field 3--|-----|
  73.      Length = 7      Length = 10       Length = 6   ^
  74.                                                     |   Record
  75.                                                         Separator
  76.  
  77.  
  78. When APPENDing into a database file, dBASE III begins with the first
  79. record and takes blocks of characters from left to right that
  80. correspond to fields in the target database file until the CR/LF
  81. characters are encountered.  The SDF record length can be larger or
  82. smaller than the target database file record length.  If the SDF
  83. record length is smaller, all fields will be APPENDed up to the CR/LF;
  84. the remaining fields in the target database file record will remain
  85. blank.  If the target database file record length is smaller, fields
  86. will be APPENDed until there is no more space left in the target
  87. record.  Since there are no field separators in the SDF structure, the
  88. length of the fields in the SDF file must match the field lengths in
  89. the database file precisely.  Otherwise the APPENDed field values will
  90. be misaligned.
  91.  
  92. If the SDF file has numeric fields that are signed or have decimal
  93. digits, be sure that your database file structure has an extra digit
  94. to hold the sign and that the decimal point has been accounted for.
  95. For example, if the incoming value has the form -999.99, the
  96. appropriate field definition would have a length of seven and two
  97. decimal places: one for the sign, three for the whole number digits,
  98. one for the decimal place , and two for the decimal digits.
  99.  
  100.  
  101. Problem Areas
  102.  
  103. The target database file has only one record after the APPEND process
  104. is complete.
  105.  
  106. - The file you are importing does not have a CR/LF as a record
  107. separator.
  108.  
  109.   The following BASIC program will allow you to take a text file with
  110. fixed-length fields and records and insert a CR/LF as a record
  111. separator to create an SDF file.  To use this program, bring up
  112. BASICA, or GWBASIC, and enter it.  When loading your form of BASIC,
  113. make certain that if the input record length is greater than 128
  114. bytes, you have specified the input record length on the DOS command
  115. line that boots BASIC.  For example, if your SDF file record length is
  116. 200, the command line will look something like:
  117.  
  118.         A>BASICA <program name>/S:200
  119.                                         |
  120.              Input record length        |
  121.  
  122.   Be sure that you specify the names of the input and output files.
  123. Additionally, you must know the length of the input record and the
  124. number of records the input file contains.  (User inputs are bounded
  125. by <>.)
  126.  
  127. 100 ' Initialize the names of the input and output files.
  128. 110 INPUT.FILE$  = < Your text file including extension >
  129. 120 OUTPUT.FILE$ = < The SDF file including extension >
  130. 130 '
  131. 140 ' Initialize attributes of input file.
  132. 150 LENGTH.OF.REC%  = < Length of the input record >
  133. 160 NUMBER.OF.RECS% = < Number of records in the input file >
  134. 170 '
  135. 180 ' Open input and output files.
  136. 190 OPEN "R",1, INPUT.FILE$, LENGTH.OF.REC%
  137. 200 FIELD #1, LENGTH.OF.REC% AS RECORD.IN$
  138. 210 OPEN "R",2, OUTPUT.FILE$, LENGTH.OF.REC% + 2
  139. 220 FIELD #2,LENGTH.OF.REC% AS RECORD.OUT$, 2 AS CR.LF$
  140. 230 LSET CR.LF$ = CHR$(13) + CHR$(10)
  141. 240 '
  142. 250 ' Read / write loop.
  143. 260 I = 1
  144. 270 WHILE  LOC(1) < NUMBER.OF.RECS%
  145. 280     GET #1,I
  146. 290     LSET RECORD.OUT$ = RECORD.IN$
  147. 300     PUT #2,I
  148. 310     I = I + 1
  149. 320 WEND
  150. 330 '
  151. 340 ' Close files and quit to BASIC.
  152. 350 CLOSE 1,2
  153. 360 END
  154.  
  155.  
  156. DELIMITED
  157.  
  158. Overview
  159.  
  160. The DELIMITED file, like the SDF file, is a structure that contains
  161. all ASCII characters.  Records are variable-length and and are
  162. separated by the carriage return/line-feed characters (0D 0A hex), in
  163. that order.  Fields are variable-length, have no leading or trailing
  164. blanks, and are separated by commas.  Character fields are bounded by
  165. delimiters.  The default delimiter is a double quotation mark.  The
  166. end-of-file mark is a Ctrl-Z (1A hex).  A typical record of a
  167. DELIMITED file might look like the following:
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.     Character       Numeric          Date       Logical
  179.         |              |               |           |
  180.         v              v               v           v
  181. |----------------|-------------|-----------------|--|
  182. ___________________________________________________________
  183. |"|S|t|r|i|n|g|"|,|1|2|3|.|4|5|,|1|9|8|5|0|1|0|1|,|T|CR|LF|
  184. -----------------------------------------------------------
  185.  ^             ^               ^                       ^
  186.  |__Delimiter__|               |___ Field              |___ Record
  187.                                     Separator               Separator
  188.  
  189. One of the greatest misunderstandings that dBASE III users have is the
  190. meaning of the delimiter and how it differs from the field separator.
  191. Many believe that the comma is the delimiter.  It unquestionably is
  192. not.  The comma is the field separator.  The delimiter is one of a
  193. pair of characters which marks the bounds of a character field.  It
  194. serves to identify a group of digits as being character type and
  195. allowing embedded commas and spaces.  In dBASE III, the delimiter must
  196. always bound character fields unless the DELIMITED WITH BLANK clause
  197. is used.  The delimiter is, however, programmable using the DELIMITED
  198. WITH <delimiter character> clause.  The field separator is, by
  199. contrast, unconfigurable and must be present unless the DELIMITED WITH
  200. BLANK clause is used.
  201.  
  202. The DELIMITED WITH BLANK clause allows the user to COPY or APPEND a
  203. text file that has variable-length records and fields but has no
  204. delimiter, and the field separator is a blank.  This is a powerful but
  205. dangerous option.  If a character field has an embedded blank,
  206. APPENDing into a database file will yield ambiguous results.  Fields
  207. that follow a character field that contains an embedded blank will not
  208. be aligned properly and may contain completely erroneous data.  Be
  209. sure to use this option with due consideration and caution.
  210.  
  211. The APPEND operation begins with the first field and proceeds left to
  212. right, taking a character at a time from the DELIMITED file and
  213. placing it into the current field of the target database field.  This
  214. continues until the field separator is encountered or until there is
  215. no more space in the current target database field.  This process
  216. proceeds until the record separator or end-of-file mark is sensed.
  217. Like the SDF structure, incoming records can be longer or shorter in
  218. length than database record length.  If the DELIMITED record length is
  219. smaller, all fields will be APPENDed up to the CR/LF; the remaining
  220. fields in the target database record will remain blank.  If the target
  221. database record length is smaller, fields will be APPENDed until there
  222. is no more space left in the target record.  Unlike the SDF structure,
  223. an incoming DELIMITED field length can be longer or shorter than the
  224. database field length.  If the DELIMITED field length is smaller, the
  225. field will be APPENDed up to the record separator.  If the DELIMITED
  226. field length is larger than the database field, the field will be
  227. APPENDed until there is no more space left in the database field.
  228.  
  229.  
  230. Problem Areas
  231.  
  232. (1) The target database file has blank or zero fields where the
  233. concomitant DELIMITED fields have data.
  234.  
  235. - A character field in the DELIMITED file has unbalanced or no
  236. delimiters.  All fields that follow an incorrectly delimited character
  237. field will have a zero or blank value.
  238.  
  239.  
  240. (2) The target database file has offset fields, some of them
  241. containing delimiters.
  242.  
  243. - The DELIMITED WITH clause of the APPEND command was executed with no
  244. delimiter.
  245.  
  246.  
  247. How the FOR Condition Operates
  248.  
  249. When COPYing to a DELIMITED or SDF file, the FOR condition operates
  250. like any other command that allows a FOR condition.  With the APPEND
  251. command it operates conceptually somewhat differently.  The incoming
  252. data is APPENDed into the target database file.  The new record is
  253. then tested to determine if it meets the specified FOR condition.  If
  254. it does not, it is discarded.  In specifying the proper FOR condition,
  255. you must take care to test the incoming record as if it were a part of
  256. the target database file.
  257.  
  258.  
  259.  
  260.  
  261. For example, you have a DELIMITED file containing a date in the form
  262. YYYYMMDD, which is the format necessary to APPEND into a field of date
  263. type.  You wish to APPEND only records that have a date field value
  264. that falls before 01/01/85.  The correct syntax is:
  265.  
  266.     APPEND FROM YourFile DELIMITED FOR Date < CTOD("01/01/85")
  267.  
  268. Incorrect syntax might be:
  269.  
  270.    APPEND FROM YourFile DELIMITED FOR Date < "19850101"
  271.  
  272.  
  273. dBASE III to WordStar/MailMerge
  274.  
  275. dBASE III can quite easily interface with WordStar/MailMerge's form
  276. letter and merging facilities.  To send a data file to MailMerge,
  277. create a DELIMITED file from your database file.  Typical syntax is as
  278. follows:
  279.  
  280.     COPY TO Yourfile DELIMITED
  281.  
  282. Most WordStar/MailMerge documentation states that a DELIMITED data
  283. file is required.  The examples, however, show a DELIMITED file with
  284. no delimiters.  But this is not a problem.  MailMerge supports the
  285. double quotation mark as a delimiter if the DELIMITED file has one.
  286.  
  287. To set up a form letter in WordStar/MailMerge, go into WordStar and
  288. enter the text of the letter as you would for any other, with some
  289. minor exceptions.  First, using the dot command .DF, open the
  290. DELIMITED file that dBASE III has created.  Next, using the dot
  291. command .RV, list the variables that reflect all the fields in the
  292. DELIMITED file.  For example:
  293.  
  294.     .DF Yourfile.txt
  295.     .RV Field1,Field2,...FieldN
  296.  
  297. If for some reason you need a subset of the fields from your dBASE III
  298. database file for your MailMerge application, use the FIELDS option of
  299. the COPY command.  This is an important consideration.  The variable
  300. list specified after the .RV is not selective.  Variables are appended
  301. into the letter form left to right, much like APPENDing into a dBASE
  302. III database file from a DELIMITED file.
  303.  
  304. The next major consideration is how to use variables within your
  305. document.  There are only two rules.  First, the variables used within
  306. the document must be bounded by ampersands (&) in order to be
  307. recognized as such.  Second, to suppress the printing of variables
  308. with blank values, add the suffix /O before the terminating ampersand
  309. character.  Last, begin the document with the dot command .OP, to
  310. suppress page numbering and end the document with the dot command .PA,
  311. to start the next print document on a new page.
  312.  
  313. Example of form letter document:
  314.  
  315. .OP
  316. .DF dBASEIII.TXT
  317. .RV Last,First,Salutation,Title,Company,Street,City,State,Zip
  318.  
  319. &First& &Last&
  320. &Title/O&
  321. &Company/O&
  322. &Street&
  323. &City&, &State&  &Zip&
  324.  
  325. Dear &Salutation&. &Last&
  326.  
  327. Congratulations, you have just received a form letter.  Your name and
  328. address are held in an indexed database file.  Periodically, you may
  329. receive a form letter.
  330.  
  331. Thank you for your kind patience.
  332.  
  333. Sincerely,
  334.  
  335.  
  336.  
  337. The Mad Letterer
  338. .PA
  339.  
  340. Would you like to download another file (Y/N)?